package com.ruoyi.web.controller.agoniapp;

import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.utils.UserIdByRequest;
import com.ruoyi.system.pojo.dto.UpdateUserDTO;
import com.ruoyi.system.pojo.dto.UserRegisterDTO;
import com.ruoyi.system.pojo.entity.User;
import com.ruoyi.system.pojo.vo.UserLoginVO;
import com.ruoyi.system.service.IAgoniUserService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import javax.servlet.http.HttpServletRequest;

@Slf4j
@RestController
@RequestMapping("/agoniapp/user")
public class UserController {
    @Autowired
    private IAgoniUserService agoniUserService;

    @PostMapping("/login")
    public AjaxResult login(String username, String password) {
        // TODO: 登录逻辑
        log.info("登录用户：{}", username);
        log.info("登录密码：{}", password);
        UserLoginVO userLoginVO = agoniUserService.login(username, password);
        // 登录成功后，返回token
        // 前端根据token获取用户信息
        return AjaxResult.success(userLoginVO);
    }

    //注册逻辑
    @PostMapping("/register")
    public AjaxResult register(@RequestBody UserRegisterDTO userRegisterDTO) {
//        log.info("注册用户：{}", username);
        log.info("注册用户：{}", userRegisterDTO);
        agoniUserService.register(userRegisterDTO);

        // TODO: 注册逻辑
        return AjaxResult.success("注册成功");
    }

    //根据token获取用户信息
    @GetMapping("/getUserInfo")
    public AjaxResult getUserInfo(HttpServletRequest request) {
        // TODO: 根据token获取用户信息
        long userId = UserIdByRequest.getUserId(request);
        log.info("获取用户信息：{}", userId);
        // 根据userId获取用户信息
        User user = agoniUserService.getUserInfo(userId);

        return AjaxResult.success("获取成功", user);
    }


    //更新用户信息
    @PutMapping("/updateUserInfo")
    public AjaxResult updateUserInfo(@RequestBody UpdateUserDTO userDTO,HttpServletRequest request) {
        // TODO: 根据token获取用户信息
        long userId = UserIdByRequest.getUserId(request);
        log.info("更新用户信息：{}", userId);
        // 根据userId获取用户信息

        // TODO: 更新用户信息
        log.info("更新用户信息：{}", userDTO);
        agoniUserService.updateUserInfo(userDTO,userId);

        return AjaxResult.success("更新成功");

    }
}
